package com.zrwl.poscloud.xo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zrwl.poscloud.base.entity.User;
import com.zrwl.poscloud.base.superI.SuperService;
import com.zrwl.poscloud.xo.vo.UserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
 * 用户信息 服务类
 *
 * @author 刘思童 AutoGenerate
 * @date 2021-02-24
 */
public interface UserService extends SuperService<User> {

    /**
     * 记录用户信息
     *
     * @param response
     */
    User insertUserInfo(HttpServletRequest request, String response);

    /**
     * 通过source uuid获取用户类
     *
     * @param source
     * @param uuid
     * @return
     */
    User getUserBySourceAnduuid(String source, String uuid);

    /**
     * 获取用户数
     *
     * @param status
     * @return
     */
    public Integer getUserCount(int status);

    /**
     * 设置Request相关，如浏览器，IP，IP来源
     *
     * @param user
     * @return
     */
    public User serRequestInfo(User user);

    /**
     * 通过ids获取用户列表
     *
     * @param ids
     * @return
     */
    public List<User> getUserListByIds(List<String> ids);
    /**
     * 通过手机号获取一个user
     * @param mobile
     * @return
     */
    public User getUserByMobile(String mobile);
    /**
     * 通过微信号获取一个user
     * @param weChat
     * @return
     */
    public UserVO getUserWeChat(String weChat);
    /**
     * 获取用户列表
     *
     * @param userVO
     * @return
     */
    public IPage<User> getPageList(UserVO userVO);
    public List<User> getAllList(UserVO userVO);
    public String add(UserVO userVO);
    public String edit(UserVO userVO);
    public String delete(UserVO userVO);
    /**
     * 重置用户密码
     *
     * @param userVO
     * @return
     */
    public String resetUserPassword(UserVO userVO);

    public String getPresentUserUid();

    public void setMe(String token,UserVO userVO);

    /**
     * 获取当前user信息
     *
     * @return
     */
    public UserVO getMe();

    public void setMe(UserVO userVO);
    UserVO getBuild(UserVO userVO);

    List<UserVO> getUserMesByNickNameAndUserNameOrMobile(UserVO userVO);
    /**
     * 获取用户信息
     *
     * @param userUid 用户uid
     * @return 用户信息
     */
    List<UserVO> getUserInfo(String userUid);
}
